package com.test24_国际化;

import org.junit.Test;

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
import java.util.Locale;
import java.util.ResourceBundle;

public class Demo03_Format {

    /**
     * 文本格式化：MessageFormat
     */
    @Test
    public void test1() {
        Locale locale = Locale.CHINA;
        // Locale locale = Locale.US;
        ResourceBundle resourceBundle = ResourceBundle.getBundle("com.test16_国际化.resource.Message", locale);
        String value = resourceBundle.getString("login.info");
        System.out.println(MessageFormat.format(value, "小李", "edu.yootk.com"));
    }

    /**
     * 数字格式化：NumberFormat
     */
    @Test
    public void test2() {
        {
            // 不推荐直接实例化
            NumberFormat numberFormat = new DecimalFormat();
            System.out.println(numberFormat.format(28292535.928531));
        }
        {
            // 最佳做法，直接使用NumberFormat的实例化方法
            NumberFormat numberFormat = NumberFormat.getInstance();
            System.out.println(numberFormat.format(28292535.928531));
        }
    }

    /**
     * 数字格式化处理
     */
    @Test
    public void test3() {
        DecimalFormat numberFormat = (DecimalFormat) NumberFormat.getInstance();
        numberFormat.applyPattern("####,####,####.000");    // 保留三位小数
        numberFormat.setRoundingMode(RoundingMode.DOWN);    // 不进位
        numberFormat.setPositivePrefix("当年的收入流水：");    // 设置前缀
        numberFormat.setMinimumFractionDigits(5);           // 保留5位小数
        System.out.println(numberFormat.format(28292535.928531));
    }

    /**
     * 百分比格式化
     */
    @Test
    public void test4() {
        // 获取百分比实例
        NumberFormat numberFormat = NumberFormat.getPercentInstance();
        System.out.println(numberFormat.format(0.9892367));
        // 如果需要自定义处理，必须强制向下转型
        DecimalFormat decimalFormat = (DecimalFormat) numberFormat;
        decimalFormat.setMinimumFractionDigits(5);
        System.out.println(decimalFormat.format(0.9892367));
    }

    /**
     * 货币格式化
     */
    @Test
    public void test5() {
        {
            // 获取货币实例
            NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.CHINA);
            System.out.println(numberFormat.format(789.98));
        }
        {
            // 获取货币实例
            NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.US);
            System.out.println(numberFormat.format(789.98));
        }
    }
}
